from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能
from math import *


class 技能0(被动技能):
    名称 = '基础精通'
    倍率 = 1.0
    所在等级 = 1
    等级上限 = 200
    学习间隔 = 1
    等级精通 = 110
    关联技能 = ['神罚之锤', '空斩打']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能1(被动技能):
    名称 = '勇气恩赐'
    所在等级 = 15
    等级上限 = 25
    基础等级 = 15

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        return (1.15 + (self.等级 - 15) * 0.02) if self.等级 >= 15 else (1 + self.等级 * 0.01)


class 技能2(主动技能):
    名称 = '光之复仇'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [45, 469]
    data0 = [0, 269, 295, 322, 350, 377, 405, 433, 459, 485, 514, 540, 568, 596, 622, 650, 678, 704, 731, 761, 787, 814, 842, 867, 894, 922, 950, 977, 1005, 1031, 1059, 1085, 1115, 1142, 1169, 1197, 1223, 1248, 1277, 1306, 1332, 1360, 1387, 1413, 1442, 1470, 1496, 1524, 1551, 1576, 1605, 1631, 1659, 1687, 1715, 1741, 1769, 1795, 1823, 1851, 1879, 1905, 1932, 1959, 1987, 2014, 2041, 2068, 2095, 2123, 2150]
    hit0 = 1
    CD = 0.2
    TP成长 = 0.10
    TP上限 = 7


class 技能3(主动技能):
    名称 = '纯白之刃'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [27, 294]
    data0 = [0, 1558, 1716, 1874, 2031, 2191, 2348, 2506, 2663, 2823, 2980, 3138, 3296, 3455, 3612, 3771, 3928, 4087, 4244, 4403, 4560, 4719, 4877, 5035, 5192, 5352, 5509, 5667, 5824, 5984, 6141, 6299, 6457, 6616, 6773, 6932, 7089, 7248, 7405, 7564, 7721, 7880, 8038, 8196, 8353, 8513, 8670, 8828, 8985, 9145, 9302, 9460, 9618, 9777, 9934, 10093, 10250, 10409, 10566, 10725, 10882, 11041, 11199, 11357, 11514, 11674, 11831, 11989, 12146, 12306, 12463]
    hit0 = 1
    CD = 2.0
    TP成长 = 0.10
    TP上限 = 7


class 技能4(主动技能):
    名称 = '胜利之矛'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [32, 343]
    data0 = [0, 1388, 1529, 1670, 1811, 1952, 2093, 2233, 2375, 2515, 2657, 2797, 2939, 3078, 3220, 3360, 3502, 3642, 3784, 3924, 4065, 4206, 4347, 4488, 4629, 4769, 4910, 5051, 5192, 5333, 5474, 5614, 5756, 5896, 6038, 6178, 6320, 6459, 6601, 6741, 6883, 7023, 7165, 7306, 7446, 7587, 7728, 7869, 8010, 8151, 8291, 8432, 8573, 8714, 8856, 8996, 9137, 9277, 9419, 9559, 9701, 9841, 9982, 10122, 10264, 10405, 10546, 10687, 10827, 10968, 11109]
    hit0 = 1
    data1 = [0, 2013, 2217, 2422, 2625, 2830, 3034, 3239, 3443, 3647, 3852, 4056, 4261, 4465, 4670, 4872, 5076, 5281, 5485, 5690, 5894, 6099, 6303, 6507, 6712, 6916, 7121, 7324, 7529, 7733, 7936, 8141, 8345, 8550, 8754, 8959, 9163, 9367, 9571, 9775, 9980, 10184, 10389, 10593, 10798, 11001, 11205, 11410, 11614, 11818, 12022, 12227, 12431, 12635, 12840, 13044, 13249, 13453, 13658, 13862, 14066, 14269, 14473, 14678, 14882, 15087, 15291, 15495, 15700, 15904, 16109]
    hit1 = 1
    CD = 6.6
    TP成长 = 0.10
    TP上限 = 7


class 技能5(主动技能):
    名称 = '圣光十字'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [32, 343]
    data0 = [0, 2234, 2460, 2687, 2914, 3141, 3367, 3594, 3821, 4048, 4274, 4501, 4728, 4955, 5182, 5408, 5635, 5862, 6089, 6315, 6542, 6769, 6996, 7222, 7449, 7676, 7903, 8129, 8356, 8583, 8810, 9037, 9263, 9490, 9717, 9944, 10170, 10397, 10624, 10851, 11077, 11304, 11531, 11758, 11984, 12211, 12438, 12665, 12892, 13118, 13345, 13572, 13799, 14025, 14252, 14479, 14706, 14932, 15159, 15386, 15613, 15839, 16066, 16293, 16520, 16747, 16973, 17200, 17427, 17654, 17880]
    hit0 = 1
    data1 = [0, 2953, 3253, 3552, 3853, 4152, 4452, 4751, 5053, 5352, 5651, 5951, 6250, 6551, 6850, 7150, 7449, 7749, 8049, 8349, 8648, 8947, 9247, 9547, 9847, 10146, 10446, 10745, 11046, 11345, 11645, 11945, 12244, 12545, 12844, 13144, 13443, 13743, 14043, 14343, 14642, 14942, 15241, 15542, 15841, 16140, 16440, 16739, 17040, 17339, 17639, 17938, 18238, 18539, 18839, 19138, 19437, 19737, 20037, 20337, 20636, 20936, 21235, 21536, 21835, 22135, 22434, 22733, 23034, 23333, 23633]
    hit1 = 1
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 7
    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return 1.2


class 技能6(主动技能):
    名称 = '圣光沁盾'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [91, 763]
    data0 = [0, 5749, 6332, 6915, 7498, 8081, 8665, 9248, 9831, 10414, 10999, 11582, 12165, 12747, 13330, 13913, 14497, 15081, 15664, 16247, 16831, 17414, 17997, 18580, 19163, 19746, 20330, 20913, 21496, 22079, 22662, 23246, 23829, 24413, 24996, 25580, 26162, 26745, 27328, 27911, 28496, 29079, 29662, 30245, 30828, 31412, 31995, 32578, 33161, 33744, 34328, 34911, 35494, 36077, 36660, 37245, 37828, 38411, 38994, 39576, 40160, 40743, 41326, 41910, 42493, 43077, 43660, 44243, 44826, 45409, 45994]
    hit0 = 1
    power0 = 1
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 7


class 技能7(被动技能):
    名称 = '坚定信念'
    所在等级 = 30
    等级上限 = 20
    基础等级 = 10

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 >= 10:
            return (1.10 + (self.等级 - 10) * 0.015)
        else:
            return (1 + self.等级 * 0.01)


class 技能8(主动技能):
    名称 = '圣光球'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    # 圣光球
    data0 = [0, 937, 1032, 1128, 1222, 1318, 1412, 1508, 1602, 1698, 1793, 1888, 1983, 2079, 2172, 2268, 2364, 2458, 2554, 2649, 2744, 2839, 2934, 3029, 3124, 3219, 3315, 3409, 3505, 3600, 3694, 3789, 3885, 3979, 4075, 4171, 4265, 4361, 4455, 4551, 4645, 4741, 4836, 4931, 5026, 5122, 5216, 5311, 5406, 5502, 5596, 5692, 5788, 5882, 5977, 6072, 6167, 6262, 6358, 6452, 6548, 6643, 6738, 6832, 6928, 7023, 7118, 7213, 7309, 7404, 7498]
    hit0 = 15
    # 圣光琉璃碎
    data1 = [0, 12999, 14320, 15636, 16958, 18273, 19594, 20916, 22232, 23553, 24868, 26190, 27506, 28827, 30149, 31464, 32785, 34101, 35423, 36744, 38059, 39381, 40697, 42018, 43333, 44655, 45976, 47292, 48614, 49930, 51250, 52572, 53888, 55209, 56525, 57847, 59162, 60483, 61804, 63120, 64442, 65757, 67078, 68400, 69716, 71037, 72352, 73674, 74995, 76311, 77633, 78948, 80269, 81585, 82907, 84228, 85544, 86865, 88181, 89502, 90824, 92140, 93460, 94776, 96098, 97414, 98735, 100057, 101372, 102693, 104009]
    hit1 = 0
    CD = 14.4
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [150, 1260]
    无色消耗 = 1

    # 理论下需要怪物可移动才能达成
    形态 = ["圣光球", "琉璃碎"]
    # 护石的部分还没写 护石的话理论和固定目标是hit0上限变为17，(ceil(5 / (0.5 - 0.10 * self.TP等级))/10)就是tp下的hit0；不到17按实际算；
    # 然后就是整体倍率*1.34

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "圣光球":
            self.hit0 = 15
            self.hit1 = 0
            # self.hit0 = ceil(10 / (1 - 0.10 * self.TP等级))
            # self.hit1 = 1
            # self.power1 = 1 + self.TP成长 * self.TP等级
            if '圣光球' in char.护石栏:
                # self.hit0 = min(17, self.hit0)
                self.hit0 = 20
        if 形态 == "琉璃碎":
            self.hit0 = 0
            self.hit1 = 1
            # self.hit0 = ceil(8 / (1 - 0.10 * self.TP等级))
            # self.hit1 = 1
            # self.power1 = 1 + self.TP成长 * self.TP等级
            if '圣光球' in char.护石栏:
                self.power1 = 1.35

    def 装备护石(self, char):
        self.power1 = 1.35


class 技能9(主动技能):
    名称 = '圣光聚合'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [32, 343]
    data0 = [0, 634, 698, 763, 827, 891, 956, 1020, 1084, 1148, 1213, 1277, 1341, 1406, 1470, 1535, 1599, 1664, 1728, 1791, 1856, 1920, 1985, 2049, 2114, 2178, 2243, 2306, 2370, 2435, 2499, 2564, 2628, 2693, 2757, 2821, 2886, 2950, 3015, 3079, 3144, 3208, 3272, 3337, 3401, 3465, 3528, 3593, 3657, 3721, 3786, 3850, 3915, 3979, 4044, 4108, 4172, 4237, 4301, 4366, 4430, 4495, 4559, 4624, 4688, 4751, 4816, 4880, 4945, 5009, 5073]
    hit0 = 1
    data1 = [0, 1267, 1396, 1525, 1654, 1783, 1912, 2041, 2168, 2297, 2426, 2555, 2683, 2812, 2941, 3069, 3198, 3326, 3455, 3584, 3713, 3842, 3971, 4099, 4228, 4357, 4485, 4613, 4742, 4871, 4999, 5128, 5257, 5386, 5515, 5644, 5772, 5901, 6028, 6157, 6286, 6415, 6544, 6673, 6802, 6931, 7058, 7187, 7316, 7445, 7574, 7702, 7831, 7959, 8088, 8216, 8345, 8474, 8603, 8732, 8860, 8989, 9118, 9247, 9374, 9503, 9632, 9761, 9889, 10018, 10147]
    hit1 = 1
    data2 = [0, 4836, 5326, 5817, 6307, 6798, 7288, 7779, 8270, 8761, 9251, 9741, 10232, 10724, 11214, 11704, 12194, 12685, 13176, 13667, 14157, 14647, 15139, 15629, 16120, 16609, 17101, 17592, 18082, 18573, 19062, 19554, 20045, 20535, 21026, 21517, 22007, 22497, 22988, 23480, 23970, 24460, 24950, 25441, 25933, 26423, 26913, 27403, 27895, 28385, 28876, 29366, 29856, 30348, 30838, 31329, 31818, 32310, 32801, 33291, 33782, 34272, 34763, 35254, 35744, 36235, 36725, 37216, 37706, 38197, 38689]
    hit2 = 1
    CD = 10.0
    TP成长 = 0.10
    TP上限 = 5


class 技能10(主动技能):
    名称 = '忏悔之锤'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 7093, 7813, 8534, 9252, 9972, 10691, 11411, 12132, 12851, 13570, 14290, 15009, 15730, 16450, 17168, 17888, 18607, 19327, 20048, 20767, 21486, 22205, 22925, 23646, 24365, 25085, 25804, 26523, 27244, 27964, 28683, 29402, 30121, 30842, 31562, 32281, 33001, 33720, 34440, 35160, 35880, 36599, 37320, 38038, 38758, 39478, 40197, 40918, 41638, 42356, 43076, 43796, 44516, 45236, 45954, 46674, 47394, 48114, 48834, 49554, 50272, 50992, 51713, 52432, 53152, 53871, 54590, 55311, 56030, 56750]
    hit0 = 1
    data1 = [0, 2951, 3250, 3551, 3849, 4149, 4448, 4749, 5047, 5347, 5646, 5947, 6245, 6545, 6844, 7145, 7443, 7743, 8042, 8342, 8641, 8941, 9240, 9538, 9839, 10138, 10438, 10736, 11036, 11336, 11636, 11934, 12234, 12534, 12834, 13132, 13432, 13732, 14032, 14330, 14630, 14929, 15230, 15528, 15828, 16127, 16428, 16726, 17025, 17325, 17626, 17924, 18223, 18523, 18823, 19122, 19421, 19721, 20020, 20320, 20619, 20919, 21218, 21518, 21817, 22117, 22416, 22714, 23015, 23315, 23614]
    hit1 = 1
    CD = 14.4
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [160, 1344]
    无色消耗 = 1

    def 装备护石(self, char):
        self.倍率 *= 1.34
        self.CDR *= 0.9


class 技能11(主动技能):
    名称 = '正义审判'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 834, 919, 1004, 1088, 1174, 1258, 1343, 1427, 1512, 1596, 1682, 1767, 1851, 1936, 2020, 2105, 2191, 2275, 2360, 2444, 2529, 2613, 2699, 2783, 2868, 2953, 3037, 3122, 3206, 3291, 3375, 3460, 3544, 3629, 3713, 3799, 3884, 3968, 4053, 4137, 4222, 4307, 4392, 4477, 4561, 4646, 4730, 4815, 4900, 4985, 5069, 5154, 5239, 5323, 5409, 5493, 5578, 5662, 5747, 5831, 5917, 6002, 6086, 6171, 6255, 6340, 6425, 6510, 6595, 6679]
    hit0 = 16
    data1 = [0, 13358, 14714, 16069, 17425, 18779, 20135, 21490, 22846, 24201, 25556, 26912, 28267, 29622, 30977, 32333, 33689, 35043, 36399, 37754, 39110, 40463, 41820, 43174, 44530, 45887, 47240, 48596, 49951, 51307, 52661, 54017, 55373, 56728, 58083, 59438, 60794, 62149, 63504, 64859, 66215, 67571, 68925, 70281, 71636, 72992, 74346, 75702, 77058, 78413, 79769, 81122, 82478, 83833, 85189, 86543, 87899, 89255, 90610, 91965, 93320, 94676, 96031, 97386, 98742, 100097, 101453, 102807, 104163, 105518, 106874]
    hit1 = 1
    CD = 45.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [350, 2940]
    无色消耗 = 2

    def 装备护石(self, char):
        self.hit0 = 8
        self.power1 = 2.16


class 技能12(被动技能):
    名称 = '信念光环'
    所在等级 = 48
    等级上限 = 40
    学习间隔 = 3
    等级精通 = 30

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.015 + 0.02 * self.等级, 5)


class 技能13(主动技能):
    名称 = '天启之珠'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 817, 1006, 1196, 1386, 1574, 1764, 1954, 2144, 2333, 2523, 2712, 2901, 3091, 3281, 3470, 3661, 3850, 4038, 4229, 4418, 4607, 4798, 4987, 5177, 5366, 5555, 5745, 5934, 6124, 6314, 6502, 6693, 6882, 7071, 7262, 7451, 7639, 7830, 8019, 8209, 8399, 8588, 8778, 8968, 9156, 9346, 9536, 9725, 9915, 10105]
    hit0 = 29
    data1 = [0, 28164, 34696, 41227, 47757, 54289, 60820, 67351, 73883, 80413, 86944, 93475, 100007, 106537, 113068, 119600, 126131, 132662, 139192, 145724, 152255, 158786, 165317, 171848, 178379, 184910, 191442, 197972, 204503, 211035, 217566, 224096, 230628, 237159, 243690, 250222, 256751, 263283, 269815, 276345, 282876, 289408, 295938, 302470, 309000, 315532, 322063, 328593, 335125, 341656, 348187]
    hit1 = 1
    倍率 = 1.3  # 圣灵之槌
    CD = 145

    MP = [1200, 10080]
    无色消耗 = 5


class 技能14(主动技能):
    名称 = '圣光突袭'
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 2332, 2567, 2804, 3041, 3278, 3514, 3750, 3987, 4223, 4460, 4697, 4934, 5169, 5406, 5643, 5880, 6116, 6352, 6589, 6825, 7062, 7299, 7536, 7771, 8008, 8245, 8482, 8718, 8954, 9191, 9427, 9664, 9901, 10138, 10373, 10610, 10847, 11083, 11320, 11556, 11793, 12029, 12266, 12503, 12740, 12975, 13212, 13449, 13685, 13922]
    hit0 = 3
    data1 = [0, 15513, 17087, 18661, 20235, 21809, 23383, 24957, 26531, 28105, 29679, 31253, 32828, 34402, 35976, 37550, 39124, 40697, 42271, 43845, 45419, 46993, 48567, 50141, 51715, 53289, 54863, 56437, 58011, 59585, 61159, 62732, 64305, 65879, 67453, 69027, 70601, 72175, 73749, 75323, 76898, 78472, 80046, 81620, 83194, 84768, 86342, 87916, 89490, 91063, 92637]
    hit1 = 1
    CD = 30.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [400, 1000]
    无色消耗 = 1

    def 装备护石(self, char):
        self.power1 = 1.49
        self.CDR *= 0.9


class 技能15(主动技能):
    名称 = '神圣之矛'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 667, 734, 802, 869, 937, 1004, 1071, 1139, 1206, 1275, 1342, 1410, 1477, 1545, 1612, 1680, 1747, 1816, 1883, 1950, 2019, 2086, 2154, 2221, 2290, 2357, 2425, 2492, 2560, 2627, 2695, 2762, 2831, 2898, 2965, 3033, 3100, 3168, 3235, 3303, 3370, 3439, 3506, 3574, 3641, 3709, 3776, 3844, 3911, 3979]
    hit0 = 1
    data1 = [0, 2771, 3052, 3335, 3615, 3896, 4177, 4459, 4740, 5020, 5303, 5583, 5864, 6146, 6427, 6708, 6989, 7271, 7552, 7833, 8114, 8396, 8677, 8958, 9238, 9521, 9802, 10082, 10364, 10645, 10926, 11207, 11489, 11770, 12050, 12333, 12614, 12894, 13176, 13458, 13738, 14019, 14301, 14582, 14863, 15144, 15426, 15706, 15988, 16270, 16550]
    hit1 = 1
    data2 = [0, 7832, 8627, 9420, 10215, 11010, 11805, 12599, 13394, 14188, 14982, 15778, 16572, 17367, 18160, 18956, 19751, 20545, 21339, 22134, 22929, 23723, 24518, 25312, 26108, 26901, 27696, 28491, 29285, 30080, 30875, 31669, 32463, 33259, 34053, 34848, 35641, 36436, 37232, 38026, 38820, 39615, 40409, 41204, 41999, 42793, 43588, 44381, 45177, 45972, 46766]
    hit2 = 3
    CD = 40.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [860, 1500]
    无色消耗 = 2

    def 装备护石(self, char):
        self.倍率 *= 1.31


class 技能16(主动技能):
    名称 = '神圣之光'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    MP = [580, 4500]
    data0 = [0, 35220, 38792, 42366, 45938, 49512, 53084, 56657, 60231, 63804, 67378, 70950, 74522, 78096, 81669, 85241, 88815, 92388, 95962, 99534, 103107, 106680, 110253, 113826, 117399, 120972, 124546, 128119, 131691, 135265, 138837, 142410, 145983, 149556, 153130, 156703, 160276, 163849, 167422, 170996, 174568, 178140, 181714, 185287, 188860, 192434, 196006, 199580, 203152, 206725, 210298]
    hit0 = 1
    CD = 20.0
    是否有护石 = 1
    无色消耗 = 3

    # 破招下的技能本身额外加成和圣光十字的buff属于加算

    def 装备护石(self, char):
        self.倍率 *= 1.35
        self.无色消耗 -= 3


class 技能17(主动技能):
    名称 = '圣佑结界'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 5834, 6426, 7018, 7610, 8202, 8793, 9385, 9977, 10569, 11161, 11753, 12345, 12936, 13528, 14120, 14712, 15304, 15896, 16488, 17080, 17671, 18264, 18856, 19448, 20040, 20632, 21224, 21816, 22407, 22999, 23591, 24183, 24775, 25367, 25959, 26550, 27142, 27734, 28326, 28918, 29510, 30102, 30693, 31285, 31877, 32469, 33061, 33654, 34246, 34838]
    hit0 = 2
    data1 = [0, 29172, 32131, 35090, 38051, 41010, 43969, 46929, 49888, 52847, 55808, 58767, 61726, 64686, 67645, 70604, 73565, 76524, 79483, 82443, 85402, 88361, 91322, 94281, 97240, 100200, 103159, 106119, 109079, 112038, 114997, 117957, 120916, 123876, 126836, 129795, 132754, 135714, 138673, 141633, 144593, 147552, 150511, 153471, 156431, 159390, 162350, 165309, 168268, 171228, 174188]
    hit1 = 1
    倍率 = 1.43  # 圣灵之槌
    CD = 40.0
    是否有护石 = 1

    MP = [580, 4500]
    无色消耗 = 3

    def 装备护石(self, char):
        self.hit0 = 0
        self.power1 = 1.78


# 神罚之锤下的空斩打和落凤锤问题比较多，暂时放置了
class 技能18(主动技能):
    名称 = '神罚之锤'
    备注 = '(一轮普通攻击，TP为基础精通)'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    # 平x第一击+平x第二击+平x第三击+神圣冲击光柱+神圣冲击冲击波；不成长
    # 冲击波吃圣光十字双加成
    data0 = [0] + [181+219+282+349*1.2+244*1.2] * 50
    hit0 = 1
    CD = 2.0
    TP成长 = 0.10
    TP上限 = 5

    # 本身有无色消耗和蓝耗的，可以通过多次上buff来被无色套加成；但同时也可以吃到非无色技能+xx这种加成
    MP = [800, 6000]
    无色消耗 = 5

    关联技能 = ['所有']

    倍率 = 0.9

    def 非无色占比(self):
        return 1

    def 无色占比(self):
        return 0

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.24 + 0.02 * self.等级, 5)


class 技能19(主动技能):
    名称 = '神圣洗礼：信仰之翼'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 3219, 3965, 4712, 5459, 6206, 6952, 7698, 8445, 9192, 9937, 10685, 11432, 12178, 12924, 13671, 14418, 15164, 15910, 16657, 17404, 18151, 18897, 19644, 20390, 21137, 21883, 22629, 23377, 24124, 24869, 25616, 26363, 27110, 27855, 28602, 29349, 30096, 30843, 31589, 32336, 33082, 33829, 34575, 35322, 36069, 36815, 37561, 38308, 39055, 39802]
    hit0 = 15
    data1 = [0, 135223, 166578, 197935, 229292, 260647, 292004, 323361, 354716, 386073, 417430, 448785, 480141, 511498, 542853, 574210, 605566, 636922, 668279, 699634, 730991, 762348, 793704, 825060, 856416, 887771, 919128, 950485, 981840, 1013197, 1044553, 1075909, 1107266, 1138622, 1169978, 1201334, 1232690, 1264046, 1295403, 1326758, 1358115, 1389471, 1420828, 1452184, 1483540, 1514896, 1546252, 1577609, 1608964, 1640321, 1671678]
    hit1 = 1
    CD = 180

    # 这里有个小问题，现在二觉把终结技信仰之翼 : 裁决单独拆解出来了，而这个技能等级是锁1的；也就是MP消耗锁2500。
    # 不过这版本影响不大，只有耳环对MP4000以上有要求，本体部分能够4000基本上终结技也够的
    MP = [2500, 5000]
    无色消耗 = 10


class 技能20(主动技能):
    名称 = '神罚之锤：天怒'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 86544, 95324, 104104, 112884, 121663, 130443, 139224, 148003, 156784, 165563, 174342, 183123, 191903, 200682, 209463, 218242, 227022, 235802, 244582, 253362, 262141, 270922, 279701, 288481, 297262, 306041, 314820, 323601, 332380, 341161, 349941, 358719, 367500, 376280, 385060, 393840, 402620, 411399, 420179, 428959, 437739, 446519, 455300, 464078, 472858, 481639, 490418, 499199, 507979, 516757]
    hit0 = 1
    data1 = [0, 57695, 63548, 69402, 75256, 81108, 86962, 92815, 98669, 104522, 110375, 116228, 122082, 127936, 133787, 139641, 145494, 151348, 157201, 163054, 168907, 174761, 180615, 186468, 192321, 198174, 204028, 209880, 215733, 221586, 227440, 233293, 239147, 245000, 250853, 256707, 262560, 268413, 274266, 280120, 285972, 291826, 297678, 303532, 309386, 315239, 321092, 326945, 332799, 338652, 344506]
    hit1 = 1
    CD = 60.0

    MP = [1065, 8000]
    无色消耗 = 7


class 技能21(被动技能):
    名称 = '神之代行者'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']

    非关联技能 = ['空斩打']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能22(主动技能):
    名称 = '生命礼赞：神威'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 56094, 69102, 82110, 95116, 108124, 121132, 134139, 147147, 160155, 173162, 186170, 199178, 212184, 225192, 238199, 251207, 264215, 277222, 290230, 303237, 316244, 329252, 342260, 355267, 368275, 381282, 394290, 407297, 420304, 433312, 446320, 459327, 472335, 485343, 498350, 511357, 524365, 537372, 550380, 563387, 576395, 589403, 602409, 615417, 628425, 641432, 654440, 667448, 680455, 693463]
    hit0 = 8
    CD = 290

    MP = [4025, 8055]
    无色消耗 = 15


class 技能23(主动技能):
    名称 = '空斩打'
    所在等级 = 1
    等级上限 = 20
    学习间隔 = 3
    等级精通 = 10
    MP = [0, 0]
    data0 = [int(i*1.0) for i in [0, 95, 105, 115, 126, 136, 147, 158, 168, 179, 189, 200, 210, 220, 231, 241, 252, 263, 273, 284, 294, 305, 315, 325, 336, 346, 357, 368, 378, 389, 399, 410, 420,
                                  430, 441, 451, 462, 473, 483, 494, 504, 515, 525, 535, 546, 556, 567, 578, 588, 599, 609, 620, 630, 640, 651, 661, 672, 683, 693, 704, 714, 725, 735, 745, 756, 766, 777, 788, 798, 809, 819]]
    CD = 2.0

    # 冲击波吃圣光十字双加成
    data1 = [0] + [349+244*1.2]*20
    hit1 = 1
    power1 = 1

    TP成长 = 0.1
    TP上限 = 5


class 技能24(主动技能):
    名称 = '落凤锤'
    所在等级 = 80
    等级上限 = 1
    基础等级 = 1
    # 当装备[神罚之锤]时,[落凤锤] : 可发动[雷霆粉碎]
    data0 = [0, 3314, 3651, 3985, 4322, 4658, 4994, 5332, 5667, 6002, 6338, 6675, 7011, 7348, 7684, 8021, 8354, 8692, 9029, 9365, 9701, 10038, 10372, 10708, 11046, 11381, 11717, 12055, 12390, 12725, 13063, 13398, 13735, 14071, 14407, 14743, 15078, 15416, 15752, 16087, 16425, 16760, 17096, 17432, 17769, 18105, 18441, 18777, 19113, 19449, 19786]
    hit0 = 2
    CD = 6.0


class classChange(Character):
    def __init__(self, equVersion=""):
        self.实际名称 = 'crusader_male_carry'
        self.名称 = '战斗·神启·圣骑士'
        self.角色 = '圣职者(男)'
        self.角色类型 = '输出'
        self.职业 = '圣骑士'
        # 用来筛CP武器的
        self.转职 = '圣骑士(男)'
        self.武器选项 = ['镰刀', '念珠', '战斧', '十字架']
        self.输出类型选项 = ['魔法固伤']
        self.防具精通属性 = ['智力']
        self.类型 = '魔法固伤'
        self.武器类型 = '镰刀'
        self.防具类型 = '板甲'
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 1.97

        super().__init__(equVersion)

    def 职业特殊计算(self):
        神罚之锤 = self.get_skill_by_name('神罚之锤')
        空斩打 = self.get_skill_by_name('空斩打')
        落凤锤 = self.get_skill_by_name('落凤锤')

        空斩打.power0 *= 1+0.1*self.get_skill_by_name('神罚之锤').TP等级
        落凤锤.等级 = 神罚之锤.等级

        落凤锤.等级上限 = 神罚之锤.等级上限

    def 伤害指数计算(self):

        神之代行者 = self.get_skill_by_name('神之代行者')

        x = 神之代行者.加成倍率(self.武器类型)

        self.get_skill_by_name('空斩打').power1 *= x

        super().伤害指数计算()

    def 技能队列设置(self, setinfo):
        self.技能队列 = []
        for item in setinfo:
            无色消耗 = self.get_skill_by_name(item['name']).无色消耗
            if item['name'] == '神圣之光' and '神圣之光' in self.护石栏:
                无色消耗 -= 3
            self.技能队列.append({
                '名称': item['name'],
                '无色消耗': 无色消耗,
                '倍率': 1.0,
                '等级变化': 0,
                'CDR': 1.0,
                '恢复': 0,
                '形态': item.get('mode', '')
            })

    def set_skill_info(self, info, rune_except=[], clothes_pants=[], rune_start_lv=20) -> None:
        super().set_skill_info(info, rune_except, ['空斩打','落凤锤'], rune_start_lv)
        info['clothes_coat'].remove("基础精通")
        info['clothes_coat'].remove("空斩打")
        info['clothes_coat'].remove("落凤锤")